package main

import "fmt"

//空接口
func myFunc(arg interface{}) {
	fmt.Println("myFunc is called")
	fmt.Println(arg)
	//golang中 给interface提供了"类型断言"的机制
	value, ok := arg.(string)
	if !ok {
		fmt.Println("arg is not string type")
	} else {
		fmt.Println("arg is string type,value = ", value)
	}
}

type Book struct {
	auth string
}

func main() {
	//函数形参采用interface{}(空接口)可以接收任意类型 类似于java中的Object
	book := Book{"Book"}
	myFunc(book)
	myFunc(100)
	myFunc(100)
	myFunc(100.0)
	myFunc("100")

	fmt.Print()
}
